Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
C# / VB.NET - [C#] Metodo Insert o Update
Forum - C# / VB.NET - [C#] Metodo Insert o Update

Avatar
sps84 (Normal User)
Expert


Messaggi: 202
Iscritto: 11/02/2009

Segnala al moderatore
Postato alle 0:30
Lunedì, 03/05/2010
Questo topic è stato chiuso dal moderatore

Ciao a tutti, continua la mia esperienza in c#. Tempo fa mi serviva sapere se data una tabella 'Articoli' con due colonne 'Cod' e 'Qta', come inserire e/o aggiornare la quantità di un articolo... senza usare stored procedure... il risultato è questo Sono graditi tutti i commenti possibili! :) e anche altre soluzioni a me non note!!

Codice sorgente - presumibilmente C++

  1. SqlConnection conn = new SqlConnection();
  2. try
  3. {
  4. conn.ConnectionString = @"Data Source=PC-SPS\SQLEXPRESS;Initial Catalog=prova;User ID=Io; Password=123";
  5. conn.Open();
  6.  
  7. SqlCommand cmd = new SqlCommand();
  8. cmd.Connection = conn;
  9. cmd.CommandText = "Select Cod,Qta From Articoli Where Cod = '" + textBox1.Text.ToString().Trim() + "'";
  10. SqlDataReader rd = cmd.ExecuteReader(CommandBehavior.SingleRow);
  11.  
  12. SqlCommand cmdAgg = new SqlCommand();
  13.  
  14. if(rd.Read())
  15. {
  16. //MessageBox.Show("E' stato trovato l'articolo con esistenza: " + rd["Qta"].ToString());
  17. int first = Convert.ToInt16(rd["Qta"].ToString());
  18. rd.Close();
  19. int second = first + int.Parse(textBox2.Text);
  20. cmdAgg.CommandText = "Update Articoli Set Qta=" + second + " Where Cod = '" + textBox1.Text + "'";
  21. cmdAgg.Connection = conn;
  22.  
  23. cmdAgg.ExecuteNonQuery();
  24.  
  25.  
  26. }
  27. else
  28. {
  29. //MessageBox.Show("Non è stato trovato l'articolo " + textBox1.Text + ".");
  30. rd.Close();                    
  31. cmdAgg.CommandText = "Insert into Articoli (Cod, Qta) values('" + textBox1.Text.ToString().Trim() + "'," + int.Parse(textBox2.Text.ToString()) + ")";
  32. cmdAgg.Connection = conn;
  33. cmdAgg.ExecuteNonQuery();
  34. }
  35.  
  36. }
  37. catch (SqlException err)
  38. {
  39. MessageBox.Show("Errore accesso db: " + err.Message);
  40. }
  41. finally
  42. {
  43. conn.Close();
  44. }


:)

PM
Avatar
HeDo (Founder Member)
Guru^2


Messaggi: 2765
Iscritto: 21/09/2007

Segnala al moderatore
Postato alle 12:41
Lunedì, 03/05/2010

ormai con l'avvento di Entity Framework il codice ado.net è obsoleto.
oltre al fatto che un uso più saggio degli oggetti SqlCommand utilizzando magari i parameters per settare i valori sarebbe meglio.


PM
Avatar
sps84 (Normal User)
Expert


Messaggi: 202
Iscritto: 11/02/2009

Segnala al moderatore
Postato alle 14:34
Lunedì, 03/05/2010

PM
Avatar
HeDo (Founder Member)
Guru^2


Messaggi: 2765
Iscritto: 21/09/2007

Segnala al moderatore
Postato alle 14:36
Lunedì, 03/05/2010
è quello.

se ti interessa l'argomento approfondisci anche linq to entities, ti si aprirà un mondo.
http://msdn.microsoft.com/it-it/library/bb386964.aspx

Ultima modifica effettuata da HeDo il 03/05/2010 alle 14:37
PM
Avatar
sps84 (Normal User)
Expert


Messaggi: 202
Iscritto: 11/02/2009

Segnala al moderatore
Postato alle 22:29
Lunedì, 03/05/2010
Grazie adesso mi ci metto sotto...:heehee::heehee:

PM